#ifndef __UI_H__
#define __UI_H__
#include "key.h"

#include "headfile.h"
#include "bool.h"

#define FALSE 0
#define TRUE 1



typedef void (*const tIsrFunc)(void);



/******************************************
 ********UI命令与输入设备信号之间的对应关系**********
 ******************************************/
typedef enum{
	UI_None				= Key_None,
	UI_Value_Plus 		= Number6,
	UI_Value_Minus 		= Number4,
	UI_Item_Plus		= Number2,
	UI_Item_Minus		= Number8,
	UI_Page_Plus		= Number3,
	UI_Page_Minus		= Number1,
	UI_Accuracy_Plus	= Number4,
	UI_Accuracy_Minus	= Number6,
	UI_Save				= Number1,
	UI_Read		    	= Number1,
	UI_Start        	= Number9
}UI_CMD_e,*UI_CMD_Ptr_e;

/*************************
 **变量的参数，包括变量的类型和权限**
 *************************/
typedef struct {
	enum{
		Double,
		Float,
		Int32_t,
		Uint32_t,
		Int16_t,
		Uint16_t,
		Int8_t,
		Uint8_t,
		Function,	//表示显示图像的函数
	}Type;

	enum{
		RO,			//只读
		RW,			//读写
	}Authority;
}Variable_Attribute;

/********************************************
 ************一个Item所必备的元素*****************
 ********************************************/
typedef struct{
	unsigned char*		Name;				//Item名，字符串类型
	void*				DataPtr;			//这个Item指向的数据地址
	Variable_Attribute	Data_Attribute;		//这个Item对应数据的参数
	float add_value;
	float cut_value;
}Item_Lib,*Item_LibPtr;

/********************************************
 ************一个Page所必备的元素*****************
 ********************************************/
typedef struct{
	unsigned char*		Name;				//Page名，字符串类型
	Item_LibPtr			ItemPtr;			//这个Page的第一个Item的首地址
	uint16_t			Item_Max;			//这个Page对应的最大的Item个数
}Page_Lib,*Page_LibPtr;

/********************************************
 ***************保存当前的活动状态*****************
 ********************************************/
typedef struct{
	float 				Accuracy;			//当前数据调整精度
	bool				ShowGraphic;		        //标记是否有图像显示
	int16_t				PageNum;			//当前的Page，类型：整形数
	Page_LibPtr			PagePtr;			//当前Page指向的Page信息首地址，类型：指针
	int16_t				ItemNum;			//当前的Item，类型：整形数
	Item_LibPtr			ItemPtr;			//当前Item指向的Item信息首地址，类型：指针
}Active_Type,*Active_TypePtr;

void UI_Init(void);
void UI_Main(void);


void UI_GetCmd(void);
void Read_Data(void);
void Save_Data(void);


#endif
